package com.pzl.util;

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NumberUtil {

    public static String LeftPad_Tow_Zero(int str) {
        java.text.DecimalFormat format = new java.text.DecimalFormat("00");
        return format.format(str);
    }

    /**
     * @param mobiles
     * @return
     */
    public static boolean isMobilePhone(String mobiles) {
        Pattern p = Pattern.compile("^[1][23456789]\\d{9}$");
        Matcher m = p.matcher(mobiles);
        return m.matches();
    }

    /**
     * 检查手机号码格式
     * 判断是否为11位数字和开头是否为"13 14 15 18 17"
     *
     * @param mobile
     * @return
     */
    public static boolean isValidMobile(String mobile) {
        if (mobile != null
                && mobile.length() == 11
                && (mobile.startsWith("13")
                || mobile.startsWith("15")
                || mobile.startsWith("18")
                || mobile.startsWith("14")
                || mobile.startsWith("17"))) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * @Description: 验证号码 手机号 固话均可
     * @param phoneNumber
     * @return
     */
    public static boolean isPhoneNumberValid(String phoneNumber) {
        boolean isValid = false;
        String expression = "((^(13|15|18|14|17)[0-9]{9}$)|(^0[1-2]{1}d{1}-?d{8}$)|"
                + "(^0[3-9]{1}d{2}-?d{7,8}$)|"
                + "(^0[1,2]{1}d{1}-?d{8}-(d{1,4})$)|"
                + "(^0[3-9]{1}d{2}-?d{7,8}-(d{1,4})$))";
        CharSequence inputStr = phoneNumber;
        Pattern pattern = Pattern.compile(expression);
        Matcher matcher = pattern.matcher(inputStr);
        if (matcher.matches()) {
            isValid = true;
        }
        return isValid;
    }

    /**
     * 判断是否是合法的固定电话
     *
     * @param fixedphone
     * @return
     */
    public static boolean isFixedPhone(String fixedphone) {
        String tregEx="[0]{1}[0-9]{2,3}-[0-9]{7,8}"; //表示a或f 0832-80691990
        Pattern pattern = Pattern.compile(tregEx);
        Matcher matcher = pattern.matcher(fixedphone);
        return matcher.find();
    }

    public static boolean isVaildCardNo(String cardNo) {
        // 定义判别用户身份证号的正则表达式（要么是15位，要么是18位，最后一位可以为字母）
        Pattern idNumPattern = Pattern
                .compile("(\\d{14}[0-9a-zA-Z])|(\\d{17}[0-9a-zA-Z])");
        // 通过Pattern获得Matcher
        Matcher idNumMatcher = idNumPattern.matcher(cardNo);
        // 判断用户输入是否为身份证号
        // if(idNumMatcher.matches()){
        // System.out.println("您的出生年月日是：");
        // //如果是，定义正则表达式提取出身份证中的出生日期
        // Pattern birthDatePattern=
        // Pattern.compile("\\d{6}(\\d{4})(\\d{2})(\\d{2}).*");//身份证上的前6位以及出生年月日
        // //通过Pattern获得Matcher
        // Matcher birthDateMather= birthDatePattern.matcher(cardNo);
        // //通过Matcher获得用户的出生年月日
        // if(birthDateMather.find()){
        // String year = birthDateMather.group(1);
        // String month = birthDateMather.group(2);
        // String date = birthDateMather.group(3);
        // //输出用户的出生年月日
        // System.out.println(year+"年"+month+"月"+date+"日");
        // }
        // }else{
        // //如果不是，输出信息提示用户
        // System.out.println("您输入的并不是身份证号");
        // }
        return idNumMatcher.matches();
    }

    /**
     * 验证邮箱
     *
     * @param email
     * @return
     */
    public static Boolean isValidEmail(String email) {
        String check = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
        Pattern regex = Pattern.compile(check);
        Matcher matcher = regex.matcher(email);
        return matcher.matches();
    }

    /**
     * 判断字符串长度是否小于指定的大小
     *
     * @param str
     * @return
     */
    public static boolean isAvailableLength(String str, int minLength, int maxLength) {
        if (str.length() < minLength && str.length() > maxLength) {
            // 不是非法字符
            return false;
        }
        return true;
    }

    /**
     * 判断字符串长度是否小于指定的大小
     *
     * @param str
     * @return
     */
    public static boolean isAvailableLength(String str, int length) {
        if (str.length() < length) {
            // 不是非法字符
            return false;
        }
        return true;
    }

    /**
     * 把bigDecimal转成百分数
     */
    public static String bigDecimal2percent(BigDecimal d1, BigDecimal d2) { // 进行四舍五入 操作
        // 任何一个数字除以1都是原数字
        // ROUND_HALF_UP是BigDecimal的一个常量， 表示进行四舍五入的操作
        double value = d1.divide(d2, 3, BigDecimal.ROUND_HALF_UP).doubleValue();
        int temp = (int) (value * 1000);
        value = (double) temp / 10;
        return value + "%";
    }

    /**
     * 把bigDecimal转成百分数
     */
    public static double bigDecimal2String(BigDecimal d1, BigDecimal d2) { // 进行四舍五入 操作
        // 任何一个数字除以1都是原数字
        // ROUND_HALF_UP是BigDecimal的一个常量， 表示进行四舍五入的操作
        double value = d1.divide(d2, 3, BigDecimal.ROUND_HALF_UP).doubleValue();
        int temp = (int) (value * 1000);
        value = (double) temp / 10;
        return value;
    }

}
